#ifndef STRINGMANAGER_H_INCLUDED
#define STRINGMANAGER_H_INCLUDED

#include "Atomic.h"

namespace CEngine {

namespace StringManager {
    ///StringID is the hash used to represent a string as a number.
    typedef U64 StringID;

    ///Initializes the string manager.
    void initialize(void);

    ///Returns the hash for a given string. Does not require initialized being called first.
    ///Does not add it to the database.
    StringID hashString(const CHAR* string);

    ///Returns the hash for a given string, and adds it to the database if it isn't already there.
    StringID internString(const CHAR* string);

    CHAR* getString(const StringID id);
}

}

#endif // STRINGMANAGER_H_INCLUDED
